home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / awt / RadialGradientPaintContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.2 KB  |  171 lines

  1. package java.awt;
  2.  
  3. import java.awt.MultipleGradientPaint.CycleMethod;
  4. import java.awt.geom.AffineTransform;
  5. import java.awt.geom.Rectangle2D;
  6. import java.awt.image.ColorModel;
  7.  
  8. final class RadialGradientPaintContext extends MultipleGradientPaintContext {
  9.    private boolean isSimpleFocus = false;
  10.    private boolean isNonCyclic = false;
  11.    private float radius;
  12.    private float centerX;
  13.    private float centerY;
  14.    private float focusX;
  15.    private float focusY;
  16.    private float radiusSq;
  17.    private float constA;
  18.    private float constB;
  19.    private float gDeltaDelta;
  20.    private float trivial;
  21.    private static final float SCALEBACK = 0.99F;
  22.    private static final int SQRT_LUT_SIZE = 2048;
  23.    private static float[] sqrtLut = new float[2049];
  24.  
  25.    RadialGradientPaintContext(RadialGradientPaint var1, ColorModel var2, Rectangle var3, Rectangle2D var4, AffineTransform var5, RenderingHints var6, float var7, float var8, float var9, float var10, float var11, float[] var12, Color[] var13, MultipleGradientPaint.CycleMethod var14, MultipleGradientPaint.ColorSpaceType var15) {
  26.       super(var1, var2, var3, var4, var5, var6, var12, var13, var14, var15);
  27.       this.centerX = var7;
  28.       this.centerY = var8;
  29.       this.focusX = var10;
  30.       this.focusY = var11;
  31.       this.radius = var9;
  32.       this.isSimpleFocus = this.focusX == this.centerX && this.focusY == this.centerY;
  33.       this.isNonCyclic = var14 == CycleMethod.NO_CYCLE;
  34.       this.radiusSq = this.radius * this.radius;
  35.       float var16 = this.focusX - this.centerX;
  36.       float var17 = this.focusY - this.centerY;
  37.       double var18 = (double)(var16 * var16 + var17 * var17);
  38.       if (var18 > (double)(this.radiusSq * 0.99F)) {
  39.          float var20 = (float)Math.sqrt((double)(this.radiusSq * 0.99F) / var18);
  40.          var16 *= var20;
  41.          var17 *= var20;
  42.          this.focusX = this.centerX + var16;
  43.          this.focusY = this.centerY + var17;
  44.       }
  45.  
  46.       this.trivial = (float)Math.sqrt((double)(this.radiusSq - var16 * var16));
  47.       this.constA = this.a02 - this.centerX;
  48.       this.constB = this.a12 - this.centerY;
  49.       this.gDeltaDelta = 2.0F * (this.a00 * this.a00 + this.a10 * this.a10) / this.radiusSq;
  50.    }
  51.  
  52.    protected void fillRaster(int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  53.       if (this.isSimpleFocus && this.isNonCyclic && this.isSimpleLookup) {
  54.          this.simpleNonCyclicFillRaster(var1, var2, var3, var4, var5, var6, var7);
  55.       } else {
  56.          this.cyclicCircularGradientFillRaster(var1, var2, var3, var4, var5, var6, var7);
  57.       }
  58.  
  59.    }
  60.  
  61.    private void simpleNonCyclicFillRaster(int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  62.       float var8 = this.a00 * (float)var4 + this.a01 * (float)var5 + this.constA;
  63.       float var9 = this.a10 * (float)var4 + this.a11 * (float)var5 + this.constB;
  64.       float var10 = this.gDeltaDelta;
  65.       var3 += var6;
  66.       int var11 = this.gradient[this.fastGradientArraySize];
  67.  
  68.       for(int var12 = 0; var12 < var7; ++var12) {
  69.          float var13 = (var8 * var8 + var9 * var9) / this.radiusSq;
  70.          float var14 = 2.0F * (this.a00 * var8 + this.a10 * var9) / this.radiusSq + var10 / 2.0F;
  71.  
  72.          int var15;
  73.          for(var15 = 0; var15 < var6 && var13 >= 1.0F; ++var15) {
  74.             var1[var2 + var15] = var11;
  75.             var13 += var14;
  76.             var14 += var10;
  77.          }
  78.  
  79.          while(var15 < var6 && var13 < 1.0F) {
  80.             int var16;
  81.             if (var13 <= 0.0F) {
  82.                var16 = 0;
  83.             } else {
  84.                float var17 = var13 * 2048.0F;
  85.                int var18 = (int)var17;
  86.                float var19 = sqrtLut[var18];
  87.                float var20 = sqrtLut[var18 + 1] - var19;
  88.                var17 = var19 + (var17 - (float)var18) * var20;
  89.                var16 = (int)(var17 * (float)this.fastGradientArraySize);
  90.             }
  91.  
  92.             var1[var2 + var15] = this.gradient[var16];
  93.             var13 += var14;
  94.             var14 += var10;
  95.             ++var15;
  96.          }
  97.  
  98.          while(var15 < var6) {
  99.             var1[var2 + var15] = var11;
  100.             ++var15;
  101.          }
  102.  
  103.          var2 += var3;
  104.          var8 += this.a01;
  105.          var9 += this.a11;
  106.       }
  107.  
  108.    }
  109.  
  110.    private void cyclicCircularGradientFillRaster(int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  111.       double var8 = (double)(-this.radiusSq + this.centerX * this.centerX + this.centerY * this.centerY);
  112.       float var24 = this.a00 * (float)var4 + this.a01 * (float)var5 + this.a02;
  113.       float var25 = this.a10 * (float)var4 + this.a11 * (float)var5 + this.a12;
  114.       float var26 = 2.0F * this.centerY;
  115.       float var27 = -2.0F * this.centerX;
  116.       int var34 = var2;
  117.       int var35 = var6 + var3;
  118.  
  119.       for(int var36 = 0; var36 < var7; ++var36) {
  120.          float var37 = this.a01 * (float)var36 + var24;
  121.          float var38 = this.a11 * (float)var36 + var25;
  122.  
  123.          for(int var39 = 0; var39 < var6; ++var39) {
  124.             double var20;
  125.             double var42;
  126.             if (var37 == this.focusX) {
  127.                var20 = (double)this.focusX;
  128.                var42 = (double)this.centerY;
  129.                var42 += var38 > this.focusY ? (double)this.trivial : (double)(-this.trivial);
  130.             } else {
  131.                double var16 = (double)((var38 - this.focusY) / (var37 - this.focusX));
  132.                double var18 = (double)var38 - var16 * (double)var37;
  133.                double var10 = var16 * var16 + (double)1.0F;
  134.                double var12 = (double)var27 + (double)-2.0F * var16 * ((double)this.centerY - var18);
  135.                double var14 = var8 + var18 * (var18 - (double)var26);
  136.                float var29 = (float)Math.sqrt(var12 * var12 - (double)4.0F * var10 * var14);
  137.                double var40 = -var12;
  138.                double var41 = var40 + (var37 < this.focusX ? (double)(-var29) : (double)var29);
  139.                var20 = var41 / ((double)2.0F * var10);
  140.                var42 = var16 * var20 + var18;
  141.             }
  142.  
  143.             float var32 = var37 - this.focusX;
  144.             var32 *= var32;
  145.             float var33 = var38 - this.focusY;
  146.             var33 *= var33;
  147.             float var30 = var32 + var33;
  148.             var32 = (float)var20 - this.focusX;
  149.             var32 *= var32;
  150.             var33 = (float)var42 - this.focusY;
  151.             var33 *= var33;
  152.             float var31 = var32 + var33;
  153.             float var28 = (float)Math.sqrt((double)(var30 / var31));
  154.             var1[var34 + var39] = this.indexIntoGradientsArrays(var28);
  155.             var37 += this.a00;
  156.             var38 += this.a10;
  157.          }
  158.  
  159.          var34 += var35;
  160.       }
  161.  
  162.    }
  163.  
  164.    static {
  165.       for(int var0 = 0; var0 < sqrtLut.length; ++var0) {
  166.          sqrtLut[var0] = (float)Math.sqrt((double)((float)var0 / 2048.0F));
  167.       }
  168.  
  169.    }
  170. }
  171.